#include <head.h>


typedef struct shm_str
{
    int id;
    char name[128];
}shm_str;



int main(int argc, char const *argv[])
{
    // 声明共享内存ID
    int shmid;

    // 结构体读写
    shm_str * shm_ptr = NULL;

    // 打开共享内存 获取共享内存id
    key_t key = ftok("./key" , 'A');

    shmid = shmget( key , 4096 , IPC_CREAT | 0666 );

    if (shmid == -1)
    {
        printf("共享内存创建失败\n");
        return 0;
    }

    // 内存映射 将共享内存 映射到 当前进程
    shm_ptr = (shm_str *)shmat(shmid , NULL , 0);
    if (shm_ptr == (void *)-1)
    {
        ERRLOG("共享内存映射失败");
        exit(0);
    }


    // 写入结构体
    (*shm_ptr).id = 10;
    strcpy( shm_ptr->name , "我是张三 123123123123\n" );


    while (1)
    {
        sleep(1);
    }
    
    // 分离
    shmdt(shm_ptr);
    
    return 0;
}